// CodeGear C++Builder
// Copyright (c) 1995, 2015 by Embarcadero Technologies, Inc.
// All rights reserved

// (DO NOT EDIT: machine generated header) 'ocv.objdetect_c.pas' rev: 30.00 (Windows)

#ifndef Ocv_Objdetect_cHPP
#define Ocv_Objdetect_cHPP

#pragma delphiheader begin
#pragma option push
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member 
#pragma pack(push,8)
#include <System.hpp>
#include <SysInit.hpp>
#include <ocv.core_c.hpp>
#include <ocv.core.types_c.hpp>

//-- user supplied -----------------------------------------------------------

namespace Ocv
{
namespace Objdetect_c
{
//-- forward type declarations -----------------------------------------------
struct TCvHaarFeatureRect;
struct TCvHaarFeature;
struct TCvHaarClassifier;
struct TCvHaarStageClassifier;
struct DECLSPEC_DRECORD TCvHidHaarClassifierCascade
{
};


struct TCvHaarClassifierCascade;
struct TCvAvgComp;
struct TCvLSVMFilterPosition;
struct TCvLSVMFilterObject;
struct TCvLatentSvmDetector;
struct TCvObjectDetection;
struct TCvDataMatrixCode;
//-- type declarations -------------------------------------------------------
typedef TCvHaarFeature *pCvHaarFeature;

struct DECLSPEC_DRECORD TCvHaarFeatureRect
{
public:
	Ocv::Core::Types_c::TCvRect r;
	float weight;
};


struct DECLSPEC_DRECORD TCvHaarFeature
{
public:
	int tilted;
	System::StaticArray<TCvHaarFeatureRect, 3> rect;
};


typedef TCvHaarClassifier *pCvHaarClassifier;

struct DECLSPEC_DRECORD TCvHaarClassifier
{
public:
	int count;
	TCvHaarFeature *haar_feature;
	float *threshold;
	int *left;
	int *right;
	float *alpha;
};


typedef TCvHaarStageClassifier *pCvHaarStageClassifier;

struct DECLSPEC_DRECORD TCvHaarStageClassifier
{
public:
	int count;
	float threshold;
	TCvHaarClassifier *classifier;
	int next;
	int child;
	int parent;
};


typedef TCvHidHaarClassifierCascade *pCvHidHaarClassifierCascade;

typedef TCvHaarClassifierCascade *pCvHaarClassifierCascade;

struct DECLSPEC_DRECORD TCvHaarClassifierCascade
{
public:
	int flags;
	int count;
	Ocv::Core::Types_c::TCvSize orig_window_size;
	Ocv::Core::Types_c::TCvSize real_window_size;
	double scale;
	TCvHaarStageClassifier *stage_classifier;
	TCvHidHaarClassifierCascade *hid_cascade;
};


struct DECLSPEC_DRECORD TCvAvgComp
{
public:
	Ocv::Core::Types_c::TCvRect rect;
	int neighbors;
};


typedef TCvLSVMFilterPosition *pCvLSVMFilterPosition;

struct DECLSPEC_DRECORD TCvLSVMFilterPosition
{
public:
	int x;
	int y;
	int l;
};


typedef TCvLSVMFilterObject *pCvLSVMFilterObject;

typedef System::StaticArray<pCvLSVMFilterObject, 2> TpCvLSVMFilterObject;

typedef TpCvLSVMFilterObject *ppCvLSVMFilterObject;

struct DECLSPEC_DRECORD TCvLSVMFilterObject
{
public:
	TCvLSVMFilterPosition V;
	System::StaticArray<float, 4> fineFunction;
	int sizeX;
	int sizeY;
	int numFeatures;
	float *H;
};


typedef TCvLatentSvmDetector *pCvLatentSvmDetector;

struct DECLSPEC_DRECORD TCvLatentSvmDetector
{
public:
	int num_filters;
	int num_components;
	int *num_part_filters;
	TpCvLSVMFilterObject *filters;
	float *b;
	float score_threshold;
};


typedef TCvObjectDetection *pCvObjectDetection;

struct DECLSPEC_DRECORD TCvObjectDetection
{
public:
	Ocv::Core::Types_c::TCvRect rect;
	float score;
};


struct DECLSPEC_DRECORD TCvDataMatrixCode
{
public:
	System::StaticArray<char, 4> msg;
	Ocv::Core::Types_c::TCvMat *original;
	Ocv::Core::Types_c::TCvMat *corners;
};


//-- var, const, procedure ---------------------------------------------------
static const int CV_HAAR_MAGIC_VAL = int(0x42500000);
#define CV_TYPE_NAME_HAAR L"opencv-haar-classifier"
static const System::Int8 CV_HAAR_FEATURE_MAX = System::Int8(0x3);
static const System::Int8 CV_HAAR_DO_CANNY_PRUNING = System::Int8(0x1);
static const System::Int8 CV_HAAR_SCALE_IMAGE = System::Int8(0x2);
static const System::Int8 CV_HAAR_FIND_BIGGEST_OBJECT = System::Int8(0x4);
static const System::Int8 CV_HAAR_DO_ROUGH_SEARCH = System::Int8(0x8);
extern "C" Ocv::Core::Types_c::pCvSeq __cdecl cvLatentSvmDetectObjects(Ocv::Core::Types_c::pIplImage image, pCvLatentSvmDetector detector, Ocv::Core::Types_c::pCvMemStorage storage, float overlap_threshold = 5.000000E-01f, int numThreads = 0xffffffff);
extern "C" pCvLatentSvmDetector __cdecl cvLoadLatentSvmDetector(const char * filename);
extern "C" void __cdecl cvReleaseLatentSvmDetector(pCvLatentSvmDetector &detector);
extern "C" Ocv::Core::Types_c::pCvSeq __cdecl cvHaarDetectObjects(const void * image, pCvHaarClassifierCascade cascade, Ocv::Core::Types_c::pCvMemStorage storage, double scale_factor, int min_neighbors, int flags, const Ocv::Core::Types_c::TCvSize min_size, const Ocv::Core::Types_c::TCvSize max_size);
extern "C" pCvHaarClassifierCascade __cdecl cvLoadHaarClassifierCascade(const char * directory, const Ocv::Core::Types_c::TCvSize orig_window_size);
extern "C" void __cdecl cvReleaseHaarClassifierCascade(pCvHaarClassifierCascade &cascade);
extern "C" void __cdecl cvSetImagesForHaarClassifierCascade(pCvHaarClassifierCascade cascade, const void * sum, const void * sqsum, const void * tilted_sum, double scale);
extern "C" int __cdecl cvRunHaarClassifierCascade(const pCvHaarClassifierCascade cascade, const Ocv::Core::Types_c::TCvPoint pt, int start_stage = 0x0);
}	/* namespace Objdetect_c */
}	/* namespace Ocv */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_OCV_OBJDETECT_C)
using namespace Ocv::Objdetect_c;
#endif
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_OCV)
using namespace Ocv;
#endif
#pragma pack(pop)
#pragma option pop

#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif	// Ocv_Objdetect_cHPP
